package com.lz.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.sun.istack.internal.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


//@Component
@Data
//    该注解用于指定表名，若不指定，则默认使用类名小写作为表名。
@TableName("user")
@AllArgsConstructor
@NoArgsConstructor
public class User {
    //    其中type决定主键的生成策略，AUTO表示由数据库决定主键的生成策略，比如mysql的自增主键，UUID等。
//    使用value属性指定主键在数据库的映射，若不指定，则默认使用字段名作为主键名。
    @TableId
    private Integer id;
    //    其中字段名称不匹配的使用TableField注解进行字段映射
//    @NotNull
    @TableField(value = "username", fill = FieldFill.INSERT)

    private String name;
    @NotNull
    private String password;
    //    boolean类型字段，会映射到数据库的bit类型字段，非0为true，0为false
    private Boolean sex;
    //    exist=false  表示该字段不在数据库中，仅用于pojo对象
    @TableField(exist = false)
    private Integer age;
    //pojo的注解在注解类主字段配置@EnumValue后，将会自动生成枚举类型字段，并将枚举值映射到数据库字段中
//    private LevelEnum level;
    //    使用该注解说明这个是逻辑删除关键字段。
    @TableLogic
    private Boolean deleted;

}
/**
 * 字段有值&&自动递增       取字段值
 * 字段有值&&无自动递增      取字段值
 * 字段无值&&自动递增       雪花算法
 * 字段无值&&无自动递增      雪花算法
 */